perm filename PIX.SAI[PIX,HPM]8 blob sn#126069 filedate 1974-10-19 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "PIX"
C00011 ENDMK
C⊗;
BEGIN "PIX"

REQUIRE "HELIB[1,3]" LIBRARY;
REQUIRE "DPYSUB.HDR[1,PDQ]" SOURCE_FILE;
REQUIRE "SOBMAT[SYS,HE]" LOAD_MODULE;
REQUIRE 2000 STRING_SPACE;
REQUIRE "⊂⊃||" DELIMITERS;

DEFINE α=⊂COMMENT⊃, EXT=⊂EXTERNAL⊃, INT=⊂INTEGER⊃, PRO=⊂PROCEDURE⊃,
	CRLF=⊂'15&'12⊃, BHEAD(BUF)=⊂(BUF+1) LAND '777777⊃, REF=⊂REFERENCE⊃,
	RED=⊂0⊃, BLUE=⊂1⊃, GREEN=⊂2⊃, CLEAR=⊂3⊃;
EXT PRO PICINI(INT CHAN, FILE, EXTEN, PPN;REF BOOLEAN FAIL;INT ARRAY STOR);
EXT PRO PICRD(REF BOOLEAN FAIL; INT ARRAY STOR);
EXT PRO PICWR(INT CHAN, FILE, EXTEN, PPN; REF BOOLEAN FAIL; INT ARRAY STOR);
EXT PRO RELCOR(INT IOWD);
EXT INT PRO GETCOR(INT SIZE);
EXT PRO INP;
EXT INT PRO GIOWD(INT ARRAY BUF);
EXT PRO EYECAL(INT SIZE, FRAM, FLAG; INT ARRAY BUF);
EXT PRO CWHEEL(INT CODE);
EXT PRO TVIN;
EXT PRO PRDUMP;
EXT PRO PORTR;
EXTERNAL PROCEDURE SPWON(INTEGER TIC;REFERENCE INTEGER ADDR);
EXTERNAL PROCEDURE CALLEN;
EXTERNAL PROCEDURE SPWOFF;
EXT INT TVWORD, FLINE, LLINE, RSIDE, LSIDE, TCLIP, BCLIP, PRTBUF,
	L1, L2, L3, P1,P2,P3,STATUS,TSERVO,LENS,TVCAM,ERROR;

SAFE INT ARRAY PNTRS[1:25];
SAFE REAL ARRAY CAMERA_MODEL[1:10,1:3],PPOT0,PPOTD,TPOT0,TPOTD,FPOT0,FPOTD,
	MART,SWING,FOC,FOCLEN0,FOCLENG[1:4],DP,P0[1:4,1:3],PP[1:4,1:2];
INT N, LIN, LINN, I, II, III, ANS, TVLENG, RFNAM, RFNUM, SEQNO;
REAL PANPOT, FOCPOT, TILPOT;
LABEL RUSE, LOOP, TKE, SKE;
STRING STR, INS;
PRELOAD_WITH "R","B","G"; STRING ARRAY CFIRST[1:3];
SAFE INTEGER ARRAY PICALLOC[1:3];  α  allocation table for data blocks;
α	first we initialize the world;
	ERROR ← 1;   α NEVER ERR OUT ON TVIN ERRORS ;
	OUTSTR("TYPE ? FOR HELP"&CRLF);
	SEQNO←0;
	QUICK_CODE '051000000000 '10,0; END;
	INS ← INCHWL;
	CLRBUF;
	WHILE LENGTH(INS) ≥ 2 ∧ INS[1 TO 1] ≠ ";" DO INS ← INS[2 TO ∞];
	LIN ← IF INS[1 TO 1]=";" THEN CVO(INS[2 TO ∞]) ELSE '15;
	LINN ← '401;
LOOP:	TVCAM ← IF (LIN LAND 7) = 1 THEN 1 ELSE
		IF (LIN LAND 7) = 2 THEN 2 ELSE 
		IF (LIN LAND 7) = 3 THEN 3 ELSE 0;
	START_CODE
		LABEL XX1,GOO;
		JRST GOO;
	XX1:	'401000000000 LIN;
	GOO:	HRLZ 1,LINN;
		IOR  1,XX1;
		CALLI 1,'400070;
		SKIP	0;
	END;
	TCLIP ← 1;
	BCLIP ← 5;
	PICALLOC[1] ← PICALLOC[2] ← PICALLOC[3] ← PNTRS[1] ← 0;
	ARRBLT(PNTRS[2],PNTRS[1],24);
			FLINE←'13;
			LLINE←'373;
			RSIDE←'450;
			LSIDE←'13;
		TVLENG ← ((RSIDE-LSIDE)/9+1)*(LLINE-FLINE+1);
		PICALLOC[1] ← GETCOR(TVLENG);
		IF TVCAM = 1 THEN
		BEGIN
		PICALLOC[2]←GETCOR(TVLENG);
		PICALLOC[3]←GETCOR(TVLENG);
		END;
		IF (RFNUM ← RFNUM - 1)≥0 THEN
		BEGIN
		I←'40;
		GO TO TKE;
		END;
		OUTSTR("*");
			IF (I ← INCHRW) = '175 THEN
				BEGIN
				OUTSTR("CHANNEL=");
				LIN←CVO(INCHWL);
				IF LIN≥'40 THEN LIN←LIN LAND '17
				ELSE LIN←1 LSH (35-LIN);
				GO TO RUSE;
				END ELSE
			IF I = '12 THEN
				BEGIN
				OUTSTR("LINE=");
				LINN←CVO(INCHWL);
				GO TO RUSE;
				END ELSE
			IF I = "?" THEN
	BEGIN
	OUTSTR(CRLF&"THIS PROGRAM ALLOWS YOU TO SNAP DDVID
COMPATIBLE PICTURES FROM ANY VIDEO SOURCE
WITH A MINIMUM OF FUSS. THE DEFAULT SOURCE	
(CHANNEL) IS THE TV RECIEVER IN THE LOUNGE

TYPE SPACE TO TAKE A PICTURE

TYPE A DIGIT FOR RAPID FIRE MODE
   n FILES CALLED PIXn.mmm WILL BE PRODUCED
   (n BEING YOUR DIGIT, AND mmm A SEQUENCE
   NUMBER), ONE EVERY FEW SECONDS

FOR CHAN 51 (THE OLD HAND EYE CAMERA)
YOU MAY ALSO TYPE
   C - TO TAKE A COLOR PICTURE (THREE FILES)
   {R,G,B} - TO TAKE A FILTERED PICTURE

TYPE ALTMODE TO CHANGE CHANNEL
 CHANNELS ARE:
   47 - VIDEO SYNTHESIZER
   51 - OLD (COHU) HAND EYE CAMERA
   52 - NEW (SIERRA) HAND EYE CAMERA
   53 - BAUMGART'S LINE (THE FONT CAMERA, MAYBE)
   55 - LOUNGE TV RECEIVER
   nn - ANY DD CHANNEL YOU CAN LOOK AT WITH <ESC>nnS

IF YOU DECIDE YOU DON'T WANT A PICTURE AFTER ALL
SIMPLY ANSWER THE 'FILE=' WITH A CARRIAGE RETURN,
OTHERWISE NAME A FILE FOR IT TO BE STORED ON

YOU MAY MONITOR THE PICTURE TAKING PROCESS AT
DD TERMINALS BY HITTING <ESC>54S. THE DIGITIZER
CURSOR WILL CAUSE THE IMAGE TO FLASH AS A FRAME
IS TAKEN"&CRLF);
	CLRBUF;
	GO TO RUSE;
	END ELSE
		IF I≥"0" ∧ I≤"9" THEN
		BEGIN
		RFNUM←(RFNAM←I)-"0";
		GO TO RUSE;
		END;
TKE:		I ← IF I > '140 ∧ I < '173 THEN I - '40 ELSE I;
		II ←	IF I = '103 THEN RED ELSE
			IF I = '102 THEN BLUE ELSE
			IF I = '107 THEN GREEN ELSE
			IF I = '122 THEN RED ELSE CLEAR;
		III ←	IF I = '103 ∧ TVCAM = 1 THEN GREEN ELSE II;
		N ← 0;
		FOR I ← II STEP 1 UNTIL III DO
		BEGIN EXTERNAL INTEGER IND;
			IF TVCAM = 1 THEN
			BEGIN
				CWHEEL(6);
				IF IND ≠ I THEN
				BEGIN INTEGER M;
					CWHEEL(I);
					M ← 12000;
					WHILE M ← M - 1 DO;
				END;
			END;
			TVWORD ← PICALLOC[N ← N + 1];
			TVIN;
		END;
		BEGIN "DSKOUT"
		INTEGER FILE, PPN, EXTEN, FAIL;
		STRING FILOUT;
		LABEL LOOP3;
LOOP3:		IF RFNUM≥0 THEN
		BEGIN
		STR←"PIX"&RFNAM&"."&CVS(SEQNO←SEQNO+1);
		GO TO SKE;
		END;
		OUTSTR("FILE=");
		STR ← INCHWL;
SKE:		IF LENGTH(STR)≠0 THEN
		FOR I ← 1 STEP 1 UNTIL III-II+1 DO
		BEGIN
		PNTRS[1]←PICALLOC[I];
		FILOUT←IF II=III THEN STR ELSE CFIRST[I]&STR;
		FILE←CVFIL(FILOUT,EXTEN,PPN);
		PICWR(1,FILE,EXTEN,PPN,FAIL,PNTRS);
		IF FAIL THEN BEGIN USERERR(0,0,"WRITING OF FILE "
			&FILOUT&" FAILED"); GO TO LOOP3;END;
		OUTSTR("FILE "&FILOUT&" WRITTEN OUT"&CRLF);
		END;
		END "DSKOUT";
α	return for next picture;

RUSE:	FOR I ← 1 STEP 1 UNTIL 3 DO
		BEGIN
		IF PICALLOC[I] THEN RELCOR(PICALLOC[I]);
		PICALLOC[I] ← PNTRS[I] ← 0;
		END;
		GO TO LOOP;
END;